created: 2021-08-09 10:18
modified: 2022-05-16 周一 13:20
aliases: [Markdown教程,MD教程]
tags: ["#Markdown #Obsidian"]
有朋友问我 ,Markdown 的效果 用 Word 完全可以复现,甚至功能更多,那为何要用 Markdown 呢?
答:
MD 的优势:
用 Markdown 写东西,记住一个原则
经常使用 Markdown 书写的朋友,也许会有一种奇妙的感触
关于标识符的滥用
这个其实是写在最后的,之所以放在这里,是因为它很重要!
如果你有一定的 MD 语法基础,可以直接点击跳转
这是一段普通的文本
# 这是一级标题
## 这是二级标题
### 这是三级标题
#### 这是四级标题
##### 这是五级标题
###### 这是六级标题
[toc]
,会根据 标题 自动生成目录 ( Table of Content )*
+ 文本内容 + *
_
+ 文本内容 + _
(下划线)输入下方内容会生成一个目录:
[toc]
这是一段普通文本
这里是一段斜体文本
这也是一段斜体文本
**
+ 文本内容 + **
__
+ 文本内容 + __
(这里是两个 _ )这是一段普通文本
*这里是一段斜体文本*
_这也是一段斜体文本_
这是一段普通文本
这里是一段加粗文本
这也是一段加粗文本
***
+ 文本内容 + ***
___
+ 文本内容 + ___
( 这里是 3 个 _ )**_
+ 文本内容 + _**
__*
+ 文本内容 + *__
*__
+ 文本内容 + __*
_**
+ 文本内容 + **_
这是一段普通文本
**这里是一段加粗文本**
__这也是一段加粗文本__
这是一段普通文本
粗斜体文本 1
粗斜体文本 2
粗斜体文本 3
粗斜体文本 4
粗斜体文本 5
粗斜体文本 6
*
+ 斜体文本 + **
+ 粗体文本 + **
+ 斜体文本 + *
_
+ 斜体文本 + __
+ 粗体文本 + __
+ 斜体文本 + _
( 这里是两个 _ )*
+ 斜体文本 + __
+ 粗体文本 + __
+ 斜体文本 + *
_
+ 斜体文本 + **
+ 粗体文本 + **
+ 斜体文本 + _
这是一段普通文本
***粗斜体文本1***
___粗斜体文本2___
**_粗斜体文本3_**
__*粗斜体文本4*__
*__粗斜体文本5__*
_**粗斜体文本6**_
这是一段普通文本
这里是一段斜体中包含粗体的文字
这也是一段斜体中包含粗体的文字
这又是一段斜体中包含粗体的文字
这还是一段斜体中包含粗体的文字
**
+ 粗体文本 + *
+ 斜体文本 + *
+ 粗体文本 + **
__
+ 粗体文本 + _
+ 斜体文本 + _
+ 粗体文本 + __
( 这里是两个 _ )**
+ 粗体文本 + _
+ 斜体文本 + _
+ 粗体文本 + **
__
+ 粗体文本 + *
+ 斜体文本 + *
+ 粗体文本 + __
这是一段普通文本
*这里是一段斜体中**包含粗体**的文字*
_这也是一段斜体中**包含粗体**的文字_
*这又是一段斜体中__包含粗体__的文字*
_这还是一段斜体中**包含粗体**的文字_
这是一段普通文本
这里是一段粗体中包含斜体的文字
这也是一段粗体中包含斜体的文字
这又是一段粗体中包含斜体的文字
这还是一段粗体中包含斜体的文字
~~
+ 文本内容 +~~
首尾各加两个 ~ 波浪号这是一段加了删除线的文本
<u>
+ 文本内容 + </u>
这是一段加了下划线的文本
有序列表 的格式:
1.
+ 空格 + 文本内容说明:
这是一段普通文本
**这里是一段粗体中*包含斜体*的文字**
__这也是一段粗体中_包含斜体_的文字__
**这又是一段粗体中_包含斜体_的文字**
__这还是一段粗体中*包含斜体*的文字__
这是第一个有序列表
这是第二个有序列表
这是第三个有序列表
这是第一个有序列表
这是同个列表下,另起一行的文本内容
这是第二个有序列表
这是同个列表下,另起一行的文本内容
数字
+ .
+ 内容下面是一条水平分割线:
---
***
效果:
~~这是一段加了删除线的文本~~
列表可在 OB 中,设置快捷键,在 批量处理与取消上 会更方便
空格
+ 文本内容 (空格可加可不加,我推荐是加上)<u>这是一段加了下划线的文本</u>
注: 后面的 >
敲回车
会自动补上
这是第一段引用文本的第 1 行
这是第一段引用文本的第 2 行
这是第二段引用文本的第 1 行
这是第二段引用文本的第 2 行
在列表和引用的书写过程中,我们需要利用 缩进 与 退格 ,让文章肌理分明,更具层级
1. 这是第一个有序列表 <!-- (Enter) -->
2. 这是第二个有序列表 <!-- (Enter) -->
3. 这是第三个有序列表
1. 这是第一个有序列表 <!-- (Shift + Enter) -->
这是同个列表下,另起一行的文本内容 <!-- (Enter) -->
2. 这是第二个有序列表 <!-- (Shift + Enter) -->
这是同个列表下,另起一行的文本内容
- 10.这是无序列表下,整十数排列的内容
- 20.这是无序列表下,整十数排列的内容
- 30.这是无序列表下,整十数排列的内容
- 100.这是无序列表下,整百数排列的内容
- 200.这是无序列表下,整百数排列的内容
- 300.这是无序列表下,整百数排列的内容
- 这是第1个无序列表 <!-- (Enter) -->
- 这是第2个无序列表 <!-- (Enter) -->
- 这是第3个无序列表
- 这是第一个无序列表 <!-- (Shift + Enter) -->
这是同个列表下,另起一行的文本内容
- 这是第二个无序列表 <!-- (Shift + Enter) -->
这是同个列表下,另起一行的文本内容
这是第一级引用
这是第二级引用
这里又是第一级引用了
> 这是第一段引用文本的第1行 <!-- (Enter) -->
> 这是第一段引用文本的第2行 <!-- (Enter) -->
<!-- (Enter) -->
> 这是第二段引用文本的第1行 <!-- (Enter) -->
> 这是第二段引用文本内第2行
第一级 有序列表 1
第二级 无序列表 1
第三级 引用 1
第三级 引用 2
第二级 无序列表 4
第一级 有序列表 3
Tab
和 Shift + tab
会无法 缩进 退格
Ctrl + ]
与 Ctrl + [
来解决问题1. 第一级有序列表1 <!-- (Enter) -->
1. 第二级有序列表1 <!-- 写文本之前,先( Tab 或 Ctrl + ] ) ;写完文本后,再(Enter) -->
2. 第二级有序列表2 <!-- (Enter) -->
2. 第一级有序列表2 <!-- 写文本前,先 ( Shift + Tab 或 Ctrl + [ ) -->
"提示信息文本"
是可选项,一般不会填鼠标左键点击
才可跳转链接,不过也有 直接鼠标点击 就能跳转的- 第一级无序列表1 <!-- (Enter) -->
- 第二级无序列表1 <!-- 写文本前,先( Tab 或 Ctrl + ] ) ;写完后,再(Enter) -->
- 第二级无序列表2 <!-- (Enter) -->
- 第一级无序列表2 <!-- 写文本前,先 ( Shift + Tab 或 Ctrl + [ ) -->
示范:
!
代表 可见" "
内[ ]
方括号里的文字信息在 Markdown 没啥实质的作用,只是方便在源代码模式下,知道这个图片是什么,在渲染界面是不会显示的。有点类似于 HTML img 标签 里的 alt 属性。> 这是第一级引用
> > 这是第二级引用 <!-- 这里手动加一个 > ,打完后,敲 2 下回车键 -->
>
> 这里又是第一级引用了
补充:
Ctrl + C
黏贴,Ctrl + V
复制 就可以style="zoom: %;"
,这里数值可以自己修改![[图片名]]
|
分隔,后面写宽度数值,单位默认是 px![[图片名|宽度数值]]
![[图片名|宽度数值x高度数值]]
x
是 英文字母 x![图床|宽度数值](链接地址)
Ctrl + T
即可快速插入表格,自由定义样式1. 第一级 有序列表1 <!-- (Shift + Enter) -->
- 第二级 无序列表1 <!-- (Shift + Enter) -->
>第三级 引用1 <!-- (Enter) -->
- 第四级 无序列表2 <!-- (Shift + Enter) -->
1. 第五级 有序列表2 <!-- (Enter) -->
- 第四级 无序列表3 <!-- 写文本前,先( Shift + Tab 或 Ctrl + [ ) ;写完后再 (Enter) -->
>第三级 引用2 <!-- 写文本前,先( Shift + Tab 或 Ctrl + [ ) ;写完后再 (Enter × 2) -->
- 第二级 无序列表4 <!-- 写文本前,先( Shift + Tab 或 Ctrl + [ ) -->
2. 第一级 有序列表3 <!-- 写文本前,先( Shift + Tab 或 Ctrl + [ ) -->
这里是表头 1 | 这里是表头 2 | 这里是表头 3 |
---|---|---|
单元格数据 1 | 单元格数据 2 | 单元格数据 3 |
单元格数据 4 | 单元格数据 5 | 单元格数据 6 |
如下图所示:
表头 1 | 表头 2 |
---|---|
这是一段很长很长很长很长很长很长很长很长很长很长很长很长很长很长的文本 | 普通文本 |
<br>
( 换行标签 )- - 这是第一段就被缩进的列表
- 这是第二段被再次缩进的列表 <!-- 这里需按两次 Ctrl + ] ,Tab键是无效的 -->
- 这是第三段列表 <!-- Ctrl + [ -->
表头 1 | 表头 2 |
---|---|
这是第一行文本 这是另起一行的文本 |
普通文本 |
着重标记
,突出显示内容[显示文本内容](链接地址 "提示信息文本")
[百度一下,你就知道](http://www.baidu.com "按住Ctrl点击跳转百度")
<table border="1" cellspacing="0" width="500" height="500">
print("Hello, World!")
这是一行突出显示的文本内容
```
+ 语言种类```
~~~
+ 语言种类~~~
![文字信息](图片链接 "提示文本信息")
![湘湖1](https://z3.ax1x.com/2021/08/06/fuNkXq.jpg "湘湖一角")
|这里是表头1|这里是表头2|这里是表头3|
|:-|:-:|-:| <!--区分表头和表格主体,:代表文本对齐方式,分别是左对齐,居中对齐,右对齐-->
|单元格数据1|单元格数据2|单元格数据3|
|单元格数据4|单元格数据5|单元格数据6|
| 表头1 | 表头2 |
|:-:|:-:|
|这是第一行文本<br>这是另起一行的文本|普通文本|
`这是一段行内代码`
`<table border="1" cellspacing="0" width="500" height="500">`
`print("Hello, World!")`
`这是一行突出显示的文本内容`
```语言种类
代码内容
代码内容
代码内容
```
下面是HTML代码块
```html
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
```
下面是CSS代码块
```css
.box {
width: 600px;
height: 400px;
margin: 100px auto;
background-image: linear-gradient(black 33.3%,red 33.3%, red 66.6%, yellow 66.6%, yellow);
}
```
下面是JavaScript代码块
```js
// 定义一个30个整数的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程
let arr = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60]
let newarr = [];
for (let i = 0, count = 0, sum = 0, len = arr.length; i < len; i++) {
sum += arr.shift();
count++;
if (count % 5 === 0) {
newarr.push(sum / 5);
sum = 0;
}
}
console.log(newarr);
let arr = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60]
let newarr = [];
for (let i = 0, len = arr.length; i < len / 5; i++) {
let subarr = arr.splice(0, 5)
for (let j = 0, sum = 0; j < subarr.length; j++) {
sum += subarr[j];
}
newarr.push(sum / 5);
}
console.log(newarr);
```
下面是Python代码块
```python
#!/usr/bin/python
# -*- coding: UTF-8 -*-
i = 2
while(i < 100):
j = 2
while(j <= (i/j)):
if not(i%j): break
j = j + 1
if (j > i/j) : print i, " 是素数"
i = i + 1
print "Good bye!"
```
下面是一块突出显示的文本
```txt
这是一段
突出显示的
文本内容
```
格式:
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
如果要再套一层,就在最外层 加 5 个 `
,以此类推……
首尾各用 两个反引号`
+ 空格
包裹
格式:
.box {
width: 600px;
height: 400px;
margin: 100px auto;
background-image: linear-gradient(black 33.3%, red 33.3%, red 66.6%, yellow 66.6%, yellow);
}
效果:
这是一段能显示`反引号`的行内代码
任务列表 的格式:
[ ]
+ 空格 + 任务列表内容 ( 中括号[ ]
里面必须有个空格)√
,变成 已办
√
( 例如 Obsidian )补充:
Ctrl + Enter
,即可生成一个待办列表
Ctrl + Enter
,会在待办列表 打 √
格式:
// 定义一个30个整数的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程
let arr = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60]
let newarr = [];
for (let i = 0, count = 0, sum = 0, len = arr.length; i < len; i++) {
sum += arr.shift();
count++;
if (count % 5 === 0) {
newarr.push(sum / 5);
sum = 0;
}
}
console.log(newarr);
let arr = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60]
let newarr = [];
for (let i = 0, len = arr.length; i < len / 5; i++) {
let subarr = arr.splice(0, 5)
for (let j = 0, sum = 0; j < subarr.length; j++) {
sum += subarr[j];
}
newarr.push(sum / 5);
}
console.log(newarr);
Markdown 的 注释 和 HMTL 一样,注释的内容在 渲染界面 不可见 (部分编辑器可见)
<!-- 这里是注释的内容 -->
%%这是Obsidian的注释内容%%
#!/usr/bin/python
# -*- coding: UTF-8 -*-
i = 2
while(i < 100):
j = 2
while(j <= (i/j)):
if not(i%j): break
j = j + 1
if (j > i/j) : print i, " 是素数"
i = i + 1
print "Good bye!"
[显示文本内容]
+ [变量名]
[变量名]
+ : + 空格 + 链接地址 (这个空格 不打也没事)这是一段 突出显示的 文本内容
[^脚注代号]
(脚注代号会直接显示在渲染界面)
[^脚注代号]
+ : + 空格 + 脚注内容 (这个 空格 不打也没事)````txt
```js
// 3. 输出 100以内(不包括100) 所有偶数的和
// 这类求和问题的核心 : 利用循环 (总和 = 旧数的和 + 新数)
let sum = 0;
for (let i = 1, sum = 0; i < 100; i++) {
if (i % 2 == 0) {
// 筛选偶数
sum += i; // sum = sum + i // 累加偶数并赋值给sum
// sum为(旧的,已经进入循环的数)的和,i 为新进入循环的数。当加到(最后一个新数i)时,sum就是最后的 总和
}
}
console.log(sum); // 打印总和
```
````
键盘文本的 格式:
<kbd>键盘文本</kbd>
<kbd>Ctrl</kbd> + <kbd>X</kbd>
效果:
说明:
加粗键盘文本的格式有两种:
<kbd>**键盘文本**</kbd>
**<kbd>ctrl + x</kbd>**
效果:
放大文本 的格式:
这是一段普通文本
<big>这是一段放大文本</big>
效果:
**<big>这是一段放大粗体文本</big>**
<big>**这是一段放大粗体文本**</big>
这是一段普通文本
<small>这是一段缩小文本</small>
<small>*这是一段缩小斜体文本*</small>
*<small>这是一段缩小斜体文本</small>*
**<font color=teal>这是一段加粗的水鸭色文本</font>**
<font color=teal>**这是一段加粗的水鸭色文本**</font>
<strong>这是一段加粗的水鸭色文本</strong>
(标记略复杂,不是很推荐)**
换成 *
即可 *<font color=teal>This is an italic teal text</font>*
<font color=teal>*This is an italic teal text*</font>
***<font color=teal>This is a bold italic teal text</font>***
<font color=teal>***This is a bold italic teal text***</font>
#注意 多彩文本尽量慎用,Markdown 的核心就是 简洁精炼,注重 实质内容,而非花哨的 颜色样式
==这里是一段高亮文本==
x^2^
<sup>这里是上标内容</sup>
X<sup>2</sup>
H~2~O
<sub>这里是下标内容</sub>
H<sub>2</sub>O
用一对 : 包裹,里面是 Emoji 符号的 语义化文本 ( Typora 编辑器 中,输入 :
就会带提示器 )
:smile:
:sweat:
:cat:
:woman_cartwheeling:
\
的作用是让标识符 转义 变为一个普通字符,完成这个效果后,反斜线会自动隐藏\
,\
不会自动隐藏\
显示出来,可以在反斜线前面再加一个 \ ,用它自己来转义自己
这里紧跟在标识符前面的反斜线\\*会被转义成普通字符显示出来,不会自动隐藏,且这段文件会是斜体*
*
号 包裹的文本内容,能够正常显示 *
,且文本不改变格式
\*这段文本被一对星号包裹,但不会倾斜\*
\*\*这段文本被2对星号包裹,但不会加粗\*\*
\*\*\*这段文本被3对星号包裹,但它既不倾斜也不加粗\*\*\*
``+空格+带`的内容+空格+`` <!-- 不要忘记前后的两个空格 -->
`` 这是一段能显示`反引号`的行内代码 ``
表头 1 | 表头 2 |
---|---|
这里的文本被 | 分隔 | 这里的文本也被 | 分隔 |
#补充 该技巧可用于 Obsidian 表格内 双链的文本修饰
文本修饰:
在 双链[[ ]]
内 以 |
引导的内容
[[链接的内容|文本修饰]]
表格内的格式:
在 |
前面加上 \
示例:
- [ ] 待办任务列表1
- [ ] 待办任务列表2
- [x] 已办任务列表1 <!-- 英文字母X -->
- [x] 已办任务列表2
效果:
使用 转义符号\
让 反引号`
变成普通字符,不再具有行内代码的标识符功能
格式:
\`这段被反引号包裹的内容不会变成行内代码\`
效果:
` 这段被反引号包裹的内容不会变成行内代码 `
在 网页链接 的 显示文本内容 中,使用 中括号 [ ]
[链接里的 \[中括号\] 能被正常显示](https://www.runoob.com)
- 出处
如下所示:
The Web, the Tree, and the String.
写作之难,在于把网状的思考,用树状结构,体现在线性展开的语句里。
解决方法:
<!-- 这里是一行注释 -->
<!--
这里是
一段
假装有
很多行的
注释
-->
%%这是一行Obsidian里的注释%%
%%
这里是
一段
假装有
很多行的
Obsidian里的
注释
%%
效果:
The Web, the Tree, and the String.
写作之难,在于把网状的思考,用树状结构,体现在线性展开的语句里。
- 史蒂芬 · 平克
让 #
不被识别为标题标识符
格式:
\# 这里的内容不会被识别为标题
效果:
# 这里的内容不会被识别为标题
在 Obsidian 中 注释是前后各两个 %
号
使用 转义符号\
,让 %%
作为普通字符显示出来,不具备注释的功能
\%\%这里的内容可以被显示喔\%\%
Obsidian 的双向链格式是 2 个方括号 [[ ]]
(双方),使用 转义符号\
,让 [
]
不再具有 双链功能
格式:
\[\[这段文本被双方包裹,但不是一个双向链\]\]
效果:
[[这段文本被双方包裹,但不是一个双向链]]
使用转义符号\
,让中括号
可以作为显示文本
在网页链接中显示出来
格式:
[百度一下,你就知道][度娘]
[知乎-有问题,就会有答案][知乎]
<!-- 这里是变量区域 -->
[度娘]: http://www.baidu.com
[知乎]: https://www.zhihu.com
效果:
文本修饰的 中括号[ ]
不需要使用 转义符号\
示范:
[[#例8 木有链接的双链|[这是一个带中括号的文本修饰]]]
效果:
这里有 6个空格分隔
场景 1:
<br>
标签,在 单独一行 中使用,增加额外的空行间距<br><br><br><br><br>
<br>
标签的时候,如果前后有标题标识符或者列表标识符,确保 br 元素 前后两行都是空白行格式:
鲁迅原名是什么[^1] ,浙江哪里人[^2]
<!-- 这里是变量区域 -->
[^1]: 周树人
[^2]: 绍兴人
效果:
这里是第一段文本
这里是第二段文本
场景 2:
|表头1|表头2|
|-|-|
|这里的文本被\|分隔|这里的文本也被\|分隔|
效果:
这里是同一段无序列表中,空一行距离显示的内容
Shift
+ Backspace
即可强制删除